"""
对于中文（普通话和方言）、粤语、英语、日语、韩语、西班牙语、印尼语、法语、德语、意大利语、马来语，
建议优先选择Paraformer以获得更优效果。同时，建议优先选择paraformer-v2模型。paraformer-v2支持指定语种，
包括中文（含普通话和多种方言）、粤语、英语、日语、韩语。
指定语种后，系统能够集中算法资源和语言模型于该特定语种，避免了在多种可能的语种中进行猜测和切换，从而减少了误识别的概率。
"""
import json
from urllib import request
from http import HTTPStatus

import dashscope

# 若没有将API Key配置到环境变量中，需将下面这行代码注释放开，并将apiKey替换为自己的API Key
# dashscope.api_key = "apiKey"

task_response = dashscope.audio.asr.Transcription.async_call(
    model='paraformer-v2',
    file_urls=[
        'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_female2.wav',
        'https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/paraformer/hello_world_male2.wav'
    ],
    language_hints=['zh', 'en'])

transcription_response = dashscope.audio.asr.Transcription.wait(
    task=task_response.output.task_id)

if transcription_response.status_code == HTTPStatus.OK:
    for transcription in transcription_response.output['results']:
        url = transcription['transcription_url']
        result = json.loads(request.urlopen(url).read().decode('utf8'))
        print(json.dumps(result, indent=4, ensure_ascii=False))
    print('transcription done!')
else:
    print('Error: ', transcription_response.output.message)